package com.qf.aop;

import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component;

/**
 * @author fy
 * @version V1.0
 * @Project workspace
 * @Package com.qf.aop
 * @Description:
 * @Date 2022/6/13 0:24
 */
//声明这个类是一个切面类，里面包含切入点（pointcut）和通知（advice）
@Aspect
//注册成spring的javaBean
@Component
public class MyAspect {

    //配置切入点
    @Pointcut("execution(* com.qf.service.UserServiceImpl.*(..))")
    public void pc(){}

    /**
     * 前置通知
     *      先执行前置通知的额外功能
     *      再执行核心业务方法
     */
    @Before("pc()")
    public void MyBefore(){
        System.out.println("==========UserService执行了前置通知=============");
    }

    /**
     * 后置通知
     *      先执行核心业务方法
     *      再执行后置通知的额外功能
     */
    @After("pc()")
    public void MyAfter(){
        System.out.println("==========UserService执行了后置通知=============");
    }

}
